/**
 * 泛型
 */
export {}

// 泛型指声明函数时不去指定具体的类型，等调用时再传递具体的类型，可以极大程度的复用代码

// 创建数值类型数组，如果再想创建字符串类型数组无法复用
function createNumberArr (length: number, value: number): number[] {
  // Array是个泛型类，调用时可传递泛型参数
  const arr = Array<number>(length).fill(value)
  return arr
}

const res = createNumberArr(3, 100)

// 使用泛型，将不明确的类型作为一个参数传递
function createArr<T> (length: number, value: T) {
  const arr = Array<T>(length).fill(value)
  return arr
}

const strArr = createArr<string>(3, 'foo')
